package com.ruoyi.psi.inventory.check.mapper;

import com.ruoyi.psi.base.product.domain.ProduceCheck;
import com.ruoyi.psi.inventory.check.domain.InventoryCheck;
import com.ruoyi.psi.inventory.check.domain.InventoryCheckList;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 库存盘点
 * 数据层
 */
public interface InventoryCheckMapper {




    /**
     * 仓库盘点查询
     * @param inventoryCheck
     * @return
     */
    public List<InventoryCheck> selectInventoryCheckList(InventoryCheck inventoryCheck);

    /**
     * 按编号查询
     * @param inventoryCheckId 仓库盘点编号
     * @return
     */
    public InventoryCheck selectInventoryCheckById(String inventoryCheckId);

    /**
     * 获取最新的一条仓库盘点编号
     * @return
     */
    public String getInventoryCheckId();

    /**
     * 仓库盘点新增
     * @param inventoryCheck
     * @return
     */
    public int insertInventoryCheck(InventoryCheck inventoryCheck);

    /**
     * 仓库盘点更新
     * @param inventoryCheck
     * @return
     */
    public int updateInventoryCheck(InventoryCheck inventoryCheck);

    /**
     * 更新仓库盘点删除标志位
     * @param inventoryCheck
     * @return
     */
    public int updateInventoryCheckDeleteFlag(InventoryCheck inventoryCheck);

    /**
     * 仓库盘点详细查询
     * @param inventoryCheckList
     * @return
     */
    public List<InventoryCheckList> selectInventoryCheckListList(InventoryCheckList inventoryCheckList);

    /**
     * 查询仓库盘点对应的所有产品详细
     * @param inventoryCheckId 仓库盘点编号
     * @return
     */
    public List<InventoryCheckList> selectInventoryCheckListListById(String inventoryCheckId);

    /**
     * 查询仓库盘点对应的指定产品详细
     * @param inventoryCheckId
     * @return
     */
    public InventoryCheckList  selectInventoryCheckListById(@Param("inventoryCheckId")String inventoryCheckId, @Param("produceId")String produceId);

    /**
     * 仓库盘点详细新增
     * @param inventoryCheckList
     * @return
     */
    public int insertInventoryCheckList(InventoryCheckList inventoryCheckList);

    /**
     * 仓库盘点详细更新
     * @param inventoryCheckList
     * @return
     */
    public int updateInventoryCheckList(InventoryCheckList inventoryCheckList);

    /**
     * 删除仓库盘点详细
     * @param inventoryCheckId  仓库盘点编号
     * @param produceId 产品编号
     * @return
     */
    public int deleteInventoryCheckListById(@Param("inventoryCheckId")String inventoryCheckId, @Param("produceId")String produceId);

    /**
     * 获取仓库盘点后产品数量、以及对应的截止时间
     * @param warehouseId 仓库编号
     * @param produceId 产品编号
     * @return
     */
    public ProduceCheck getProduceNumberAfterCheck(@Param("warehouseId")String warehouseId, @Param("produceId")String produceId);
}
